home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / gnu / djgpp / contrib / dvx / inc / x11 / xresourc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-15  |  10.2 KB  |  355 lines

  1. /* $XConsortium: Xresource.h,v 1.26 89/12/12 12:12:12 jim Exp $ */
  2.  
  3. /***********************************************************
  4. Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
  5. and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
  6.  
  7.                         All Rights Reserved
  8.  
  9. Permission to use, copy, modify, and distribute this software and its 
  10. documentation for any purpose and without fee is hereby granted, 
  11. provided that the above copyright notice appear in all copies and that
  12. both that copyright notice and this permission notice appear in 
  13. supporting documentation, and that the names of Digital or MIT not be
  14. used in advertising or publicity pertaining to distribution of the
  15. software without specific, written prior permission.  
  16.  
  17. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  18. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  19. DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  20. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  22. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23. SOFTWARE.
  24.  
  25. ******************************************************************/
  26.  
  27. #ifndef _Xresource_h
  28. #define _Xresource_h
  29.  
  30. /****************************************************************
  31.  ****************************************************************
  32.  ***                                                          ***
  33.  ***                                                          ***
  34.  ***          X Resource Manager Intrinsics                   ***
  35.  ***                                                          ***
  36.  ***                                                          ***
  37.  ****************************************************************
  38.  ****************************************************************/
  39.  
  40.  
  41.  
  42. /****************************************************************
  43.  *
  44.  * Miscellaneous definitions
  45.  *
  46.  ****************************************************************/
  47.  
  48. #ifdef USG
  49. #ifndef __TYPES__
  50. #include <sys/types.h>            /* forgot to protect it... */
  51. #define __TYPES__
  52. #endif /* __TYPES__ */
  53. #else
  54. #include <sys/types.h>
  55. #endif /* USG */
  56.  
  57. #ifdef __cplusplus            /* do not leave open across includes */
  58. extern "C" {                    /* for C++ V2.0 */
  59. #endif
  60.  
  61. #ifndef NeedFunctionPrototypes
  62. #if defined(FUNCPROTO) || defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
  63. #define NeedFunctionPrototypes 1
  64. #else
  65. #define NeedFunctionPrototypes 0
  66. #endif /* __STDC__ */
  67. #endif /* NeedFunctionPrototypes */
  68.  
  69. #include <sys\param.h>
  70.  
  71. /****************************************************************
  72.  *
  73.  * ||| Memory Management (move out of here!)
  74.  *
  75.  ****************************************************************/
  76.  
  77. extern char *Xpermalloc(
  78. #if NeedFunctionPrototypes
  79.     unsigned int    /* size */
  80. #endif
  81. );
  82.  
  83. /****************************************************************
  84.  *
  85.  * Quark Management
  86.  *
  87.  ****************************************************************/
  88.  
  89. typedef long     XrmQuark, *XrmQuarkList; /* Was int. POHC 91/01/22 */
  90. #define NULLQUARK ((XrmQuark) 0)
  91.  
  92. typedef char *XrmString;
  93. #define NULLSTRING ((XrmString) 0)
  94.  
  95. /* find quark for string, create new quark if none already exists */
  96. extern XrmQuark XrmStringToQuark(
  97. #if NeedFunctionPrototypes
  98.     /*const*/ char*     /* string */ /* 90/06/18 POHC */
  99. #endif
  100. );
  101.  
  102. /* find string for quark */
  103. extern XrmString XrmQuarkToString(
  104. #if NeedFunctionPrototypes
  105.     XrmQuark         /* quark */
  106. #endif
  107. );
  108.  
  109. extern XrmQuark XrmUniqueQuark(
  110. #if NeedFunctionPrototypes
  111.     void
  112. #endif
  113. );
  114.  
  115. #define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
  116.  
  117.  
  118. /****************************************************************
  119.  *
  120.  * Conversion of Strings to Lists
  121.  *
  122.  ****************************************************************/
  123.  
  124. typedef enum _XrmBinding {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; /* Added Tag. POHC 91/01/16 */
  125.  
  126. extern void XrmStringToQuarkList(
  127. #if NeedFunctionPrototypes
  128.     const char*        /* string */,
  129.     XrmQuarkList    /* quarks_return */
  130. #endif
  131. );
  132.  
  133. extern void XrmStringToBindingQuarkList(
  134. #if NeedFunctionPrototypes
  135.     const char*        /* string */,
  136.     XrmBindingList    /* bindings_return */,
  137.     XrmQuarkList    /* quarks_return */
  138. #endif
  139. );
  140.  
  141. /****************************************************************
  142.  *
  143.  * Name and Class lists.
  144.  *
  145.  ****************************************************************/
  146.  
  147. typedef XrmQuark     XrmName;
  148. typedef XrmQuarkList XrmNameList;
  149. #define XrmNameToString(name)        XrmQuarkToString(name)
  150. #define XrmStringToName(string)        XrmStringToQuark(string)
  151. #define XrmStringToNameList(str, name)    XrmStringToQuarkList(str, name)
  152.  
  153. typedef XrmQuark     XrmClass;
  154. typedef XrmQuarkList XrmClassList;
  155. #define XrmClassToString(class)        XrmQuarkToString(class)
  156. #define XrmStringToClass(class)        XrmStringToQuark(class)
  157. #define XrmStringToClassList(str,class)    XrmStringToQuarkList(str, class)
  158.  
  159.  
  160.  
  161. /****************************************************************
  162.  *
  163.  * Resource Representation Types and Values
  164.  *
  165.  ****************************************************************/
  166.  
  167. typedef XrmQuark     XrmRepresentation;
  168. #define XrmStringToRepresentation(string)   XrmStringToQuark(string)
  169. #define    XrmRepresentationToString(type)   XrmQuarkToString(type)
  170.  
  171. typedef struct _XrmValue { /* Tagged. POHC 90/10/08 */
  172.     unsigned int    size;
  173.     caddr_t        addr;
  174. } XrmValue, *XrmValuePtr;
  175.  
  176.  
  177. /****************************************************************
  178.  *
  179.  * Resource Manager Functions
  180.  *
  181.  ****************************************************************/
  182.  
  183. typedef struct _XrmHashBucketRec *XrmHashBucket;
  184. typedef XrmHashBucket *XrmHashTable;
  185. typedef XrmHashTable XrmSearchList[];
  186. typedef struct _XrmHashBucketRec *XrmDatabase;
  187.  
  188.  
  189. extern void XrmDestroyDatabase(
  190. #if NeedFunctionPrototypes
  191.     XrmDatabase        /* database */    
  192. #endif
  193. );
  194.  
  195. extern void XrmQPutResource(
  196. #if NeedFunctionPrototypes
  197.     XrmDatabase*    /* database */,
  198.     XrmBindingList    /* bindings */,
  199.     XrmQuarkList    /* quarks */,
  200.     XrmRepresentation    /* type */,
  201.     XrmValue*        /* value */
  202. #endif
  203. );
  204.  
  205. extern void XrmPutResource(
  206. #if NeedFunctionPrototypes
  207.     XrmDatabase*    /* database */,
  208.     const char*        /* specifier */,
  209.     const char*        /* type */,
  210.     XrmValue*        /* value */
  211. #endif
  212. );
  213.  
  214. extern void XrmQPutStringResource(
  215. #if NeedFunctionPrototypes
  216.     XrmDatabase*    /* database */,
  217.     XrmBindingList      /* bindings */,
  218.     XrmQuarkList    /* quarks */,
  219.     const char*        /* value */
  220. #endif
  221. );
  222.  
  223. extern void XrmPutStringResource(
  224. #if NeedFunctionPrototypes
  225.     XrmDatabase*    /* database */,
  226.     const char*        /* specifier */,
  227.     const char*        /* value */
  228. #endif
  229. );
  230.  
  231. extern void XrmPutLineResource(
  232. #if NeedFunctionPrototypes
  233.     XrmDatabase*    /* database */,
  234.     const char*        /* line */
  235. #endif
  236. );
  237.  
  238. extern  XrmQGetResource(
  239. #if NeedFunctionPrototypes
  240.     XrmDatabase        /* database */,
  241.     XrmNameList        /* quark_name */,
  242.     XrmClassList    /* quark_class */,
  243.     XrmRepresentation*    /* quark_type_return */,
  244.     XrmValue*        /* value_return */
  245. #endif
  246. );
  247.  
  248. extern Bool XrmGetResource(
  249. #if NeedFunctionPrototypes
  250.     XrmDatabase        /* database */,
  251.     const char*        /* str_name */,
  252.     const char*        /* str_class */,
  253.     char**        /* str_type_return */,
  254.     XrmValue*        /* value_return */
  255. #endif
  256. );
  257.  
  258. extern Bool XrmQGetSearchList(
  259. #if NeedFunctionPrototypes
  260.     XrmDatabase        /* database */,
  261.     XrmNameList        /* names */,
  262.     XrmClassList    /* classes */,
  263.     XrmSearchList    /* list_return */,
  264.     int            /* list_length */
  265. #endif
  266. );
  267.  
  268. extern Bool XrmQGetSearchResource(
  269. #if NeedFunctionPrototypes
  270.     XrmSearchList    /* list */,
  271.     XrmName        /* name */,
  272.     XrmClass        /* class */,
  273.     XrmRepresentation*    /* type_return */,
  274.     XrmValue*        /* value_return */
  275. #endif
  276. );
  277.  
  278. /****************************************************************
  279.  *
  280.  * Resource Database Management
  281.  *
  282.  ****************************************************************/
  283.  
  284. extern XrmDatabase XrmGetFileDatabase(
  285. #if NeedFunctionPrototypes
  286.     const char*        /* filename */
  287. #endif
  288. );
  289.  
  290. extern XrmDatabase XrmGetStringDatabase(
  291. #if NeedFunctionPrototypes
  292.     const char*        /* data */  /*  null terminated string */
  293. #endif
  294. );
  295.  
  296. extern void XrmPutFileDatabase(
  297. #if NeedFunctionPrototypes
  298.     XrmDatabase        /* database */,
  299.     const char*        /* filename */
  300. #endif
  301. );
  302.  
  303. extern void XrmMergeDatabases(
  304. #if NeedFunctionPrototypes
  305.     XrmDatabase        /* source_db */,
  306.     XrmDatabase*    /* target_db */
  307. #endif
  308. );
  309.  
  310.  
  311.  
  312. /****************************************************************
  313.  *
  314.  * Command line option mapping to resource entries
  315.  *
  316.  ****************************************************************/
  317.  
  318. typedef enum {
  319.     XrmoptionNoArg,    /* Value is specified in OptionDescRec.value        */
  320.     XrmoptionIsArg,     /* Value is the option string itself            */
  321.     XrmoptionStickyArg, /* Value is characters immediately following option */
  322.     XrmoptionSepArg,    /* Value is next argument in argv            */
  323.     XrmoptionResArg,    /* Resource and value in next argument in argv      */
  324.     XrmoptionSkipArg,   /* Ignore this option and the next argument in argv */
  325.     XrmoptionSkipLine,  /* Ignore this option and the rest of argv        */
  326.     XrmoptionSkipNArgs    /* Ignore this option and the next 
  327.                OptionDescRes.value arguments in argv */
  328. } XrmOptionKind;
  329.  
  330. typedef struct _XrmOptionDescRec { /* Tagged. POHC 90/10/08 */
  331.     char        *option;        /* Option abbreviation in argv        */
  332.     char        *specifier;     /* Resource specifier            */
  333.     XrmOptionKind   argKind;        /* Which style of option it is        */
  334.     caddr_t        value;        /* Value to provide if XrmoptionNoArg   */
  335. } XrmOptionDescRec, *XrmOptionDescList;
  336.  
  337.  
  338. extern void XrmParseCommand(
  339. #if NeedFunctionPrototypes
  340.     XrmDatabase*    /* database */,
  341.     XrmOptionDescList    /* table */,
  342.     int            /* table_count */,
  343.     const char*        /* name */,
  344.     int*        /* argc_in_out */,
  345.     char**        /* argv_in_out */             
  346. #endif
  347. );
  348.  
  349. #ifdef __cplusplus
  350. }                        /* for C++ V2.0 */
  351. #endif
  352.  
  353. #endif /* _Xresource_h */
  354. /* DON'T ADD STUFF AFTER THIS #endif */
  355.